import QtQuick 2.2
import QtQuick.Controls 1.1
import QtQuick.Controls.Styles 1.1
import "./components/"
import "./js/utils.js" as Utils

Rectangle {
    id: selecaoEtapa
    color: "#F5F5F5"
    objectName: "selecaoEtapa"
    antialiasing: true
    height: parent.height
    width: parent.width

    property Button botaoPrimeiraPagina

    onVisibleChanged: {
        if (visible == true) {
            updateHeader("#438EB9");
        }
    }

    function iniciarSelecaoEtapa() {
        updateHeader("#438EB9");
        selecionarPagina(botaoPrimeiraPagina);
    }

    // Método utilizado para criar os botões das etapas
    function carregarDados() {
        var totalPaginas = getTotalPaginas();

        if (totalPaginas > 0) {
            var color = appSkin.paginatorButtonColor==""?header.color:appSkin.paginatorButtonColor;
            var pressedColor = appSkin.paginatorButtonPressedColor==""?header.color:appSkin.paginatorButtonPressedColor;

            var botoesPaginador = Utils.criarBotoesPaginador(paginador, totalPaginas, selecaoPagina, selecionarPagina, "white", header.color, header.color);

            for (var i = 0; i < botoesPaginador.length; i++) {
                var botaoPaginador = botoesPaginador[i];
                var numeroPagina = ~~botaoPaginador.text;
                var etapas = coletor_pcp.get_operacoes(numeroPagina);
                var botoesEtapas = Utils.criarBotoesEtapas(listaEtapas, etapas, selecionarEtapa);
                botaoPaginador.data = botoesEtapas;

                if (numeroPagina == 1) {
                    botaoPrimeiraPagina = botaoPaginador;
                }
            }
        }
    }

    // Ação dos Botões de seleção das Etapas
    function selecionarEtapa(button, data) {
        // Esse teste evita que o clique duplo realize duas acoes
        if (Stack.status == Stack.Active) {
            updateHeader(button.buttonColor, data.operacao);
            var selecaoProduto = stackView.push({item: app.selecaoProduto, immediate: true, destroyOnPop: false});
            selecaoProduto.iniciarSelecaoProdutos(data.id_depoperacao);
        }
    }

    //Ação dos Botões do paginador
    function selecionarPagina(button) {
        // Omite as etapas que estão sendo exibidos
        Utils.omitirOpcoes(listaEtapas);

        // Exibe as etapas da página selecionada
        Utils.mostrarOpcoes(button.data);
    }

    // Retorna o total de páginas
    function getTotalPaginas() {
        return coletor_pcp.get_total_paginas_operacoes();
    }

    // Atualiza a cor e o título do Header
    function updateHeader(colorCode, etapa) {
        header.color = qsTr(colorCode);
        if (etapa !== undefined) {
            header2.title = qsTr(app.departamento + " - " + etapa);
            header.canGoBack = true;
        } else {
            header2.title = qsTr(app.departamento);
            header.canGoBack = false;
            header.goBackText = "Desligar";
        }
    }

    ExclusiveGroup { id: selecaoPagina }

    Text {
        id: description
        text: qsTr("Etapa(s) de Produção:")
        //font.underline: true
        font.pixelSize: (parent.height + parent.anchors.topMargin) * 0.06
        font.bold: false
        anchors.top: parent.top
        anchors.topMargin: parent.height * 0.01
        anchors.horizontalCenter: parent.horizontalCenter
    }

    Grid {
        id: listaEtapas
        anchors.top: description.bottom
        anchors.topMargin: parent.height * 0.01
        anchors.bottom: paginador.top
        anchors.left: parent.left
        anchors.leftMargin: parent.width * 0.01
        anchors.right: parent.right
        columns: 3
        rows: 3
        spacing: parent.width * 0.01
    }

    Paginator {
        id: paginador
    }
}
